function ajax(options) {
    //接收参数
    let type = options.type || 'get';
    //处理type去除空格然后转换为大写
    type = type.replaceAll('  ', '').toUpperCase()
    let url = options.url,
        data = options.data || {},
        async = options.async || true
    //判断url是否存在
    if (!url) {
        options.onerror('url 不能为空')
        return false
    }
    //判断type是否为get 如果是get 就把data拼接到url上
    if (type === 'GET' && data) {
        url += '?'
        for (let key in data) {
            url += key + '=' + data[key] + '&'
        }
        url = url.substring(0, url.length - 1)
    }
    //创建ajax对象
    let xhr = new XMLHttpRequest()
    //当状态回调函数
    xhr.onreadystatechange = function () {
        //当状态完成时
        if (xhr.readyState == 4 && xhr.status == 200) {
            //把结果转成json数组对象
            let res = JSON.parse(xhr.responseText)
            //调用成功回调函数
            options.success(res)
        }
    }
    //打开请求,配置请求方式和url
    xhr.open(type, url, async)
    //如果是POST请求
    if (type === 'POST') {
        //设置请求头
        xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded')
    }
    //如果数据存在
    if (data != {}) {
        //把数据拼接成发送的格式 进行发送
        let dataStr = ''
        for (let key in data) {
            dataStr += key + '=' + data[key] +'&'
        }
        data = dataStr.substring(0, dataStr.length - 1)
        xhr.send(data)
    } else{
        //没有数据 直接发送
        xhr.send()
    }
}